package com.yuxi.datasource;

import com.yuxi.constants.DataType;
import org.springframework.jdbc.datasource.lookup.AbstractRoutingDataSource;

/**
 * 动态数据源（需要继承AbstractRoutingDataSource）
 * Created by yuxi on 16/10/26.
 */
public class DynamicDataSource extends AbstractRoutingDataSource {

    /**
     * 设置动态数据源
     *
     * @return
     */
    @Override
    public Object determineCurrentLookupKey() {
        return DataBaseContextHolder.getDataType();
    }

    public static class DataBaseContextHolder {
        private static final ThreadLocal<DataType> threadLocal = new ThreadLocal<>();

        /**
         * 获取数据源
         *
         * @return
         */
        public static DataType getDataType() {
            return threadLocal.get();
        }

        /**
         * 设置数据源
         *
         * @param dataType
         */
        public static void setDataType(DataType dataType) {
            threadLocal.set(dataType);
        }
    }

}
